package com.ruoyi.system.vo;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 验收单实例视图对象
 * 用于展示验收单实例及其填写记录信息
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
public class AcceptanceChecklistInstanceVO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 验收单模板ID
     */
    private Long templateId;

    /**
     * 项目ID
     */
    private Long projectId;

    /**
     * 施工阶段ID
     */
    private Long stageId;

    /**
     * 验收单实例名称
     */
    private String instanceName;

    /**
     * 关联的消息推送任务ID
     */
    private Long msgTaskId;

    /**
     * 关联的消息推送子项ID
     */
    private Long msgItemId;

    /**
     * 验收人H5用户ID
     */
    private Long h5UserId;

    /**
     * 验收人姓名
     */
    private String h5UserName;

    /**
     * 验收状态
     * PENDING-待验收, IN_PROGRESS-验收中, COMPLETED-已完成
     */
    private String status;

    /**
     * 提交时间
     */
    private LocalDateTime submitTime;

    /**
     * 验收单模板信息
     */
    private AcceptanceChecklistTemplateVO template;

    /**
     * 验收单填写记录列表
     */
    private List<RecordVO> records;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 验收单填写记录视图对象
     */
    @Data
    public static class RecordVO {

        /**
         * 主键ID
         */
        private Long id;

        /**
         * 验收单实例ID
         */
        private Long instanceId;

        /**
         * 验收单模板项ID
         */
        private Long templateItemId;

        /**
         * 序号
         */
        private Integer seqNo;

        /**
         * 验收项名称
         */
        private String itemName;

        /**
         * 验收标准描述
         */
        private String acceptanceStandard;

        /**
         * 验收类型
         */
        private String acceptanceType;

        /**
         * 是否验收完成
         * 1-完成, 0-未完成
         */
        private Integer isCompleted;

        /**
         * 完成情况备注
         */
        private String completionRemark;

        /**
         * 完成情况图片URL列表
         */
        private List<String> completionImages;

        /**
         * 完成时间
         */
        private LocalDateTime completionTime;

        /**
         * 创建时间
         */
        private LocalDateTime createTime;

        /**
         * 更新时间
         */
        private LocalDateTime updateTime;
    }
}

